<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/Python-3.6.2/Include/code.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/Python-3.6.2/Include/code.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="k">/* Definitions for bytecode */</span>
<a name="2" /><span class="True">       2:</span> 
<a name="3" /><span class="True">       3:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="4" /><span class="True">       4:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="macros_noref.html#_UHlfQ09ERV9IXzA_"><span class="b">Py_CODE_H</span></a>
<a name="5" /><span class="True">       5:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlfQ09ERV9IXzA_"><span class="b">Py_CODE_H</span></a>
<a name="6" /><span class="False">       6:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">__cplusplus</span>
<a name="7" /><span class="False">       7:</span> <span class="m">extern</span> <span class="e">&quot;C&quot;</span> <span class="f">{</span>
<a name="8" /><span class="True">       8:</span> <span class="f">#</span><span class="n">endif</span>
<a name="9" /><span class="True">       9:</span> 
<a name="10" /><span class="True">      10:</span> <span class="m">typedef</span> <span class="b">uint16_t</span> <span class="b">_Py_CODEUNIT</span><span class="f">;</span>
<a name="11" /><span class="True">      11:</span> 
<a name="12" /><span class="False">      12:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">WORDS_BIGENDIAN</span>
<a name="13" /><span class="False">      13:</span> <span class="f">#</span>  <span class="n">define</span> <a href="macros_noref.html#_X1B5X09QQ09ERV8w"><span class="b">_Py_OPCODE</span></a><span class="f">(</span><span class="b">word</span><span class="f">)</span> <span class="f">(</span><span class="f">(</span><span class="b">word</span><span class="f">)</span> <span class="f">&gt;&gt;</span> <span class="c">8</span><span class="f">)</span>
<a name="14" /><span class="False">      14:</span> <span class="f">#</span>  <span class="n">define</span> <a href="macros_noref.html#_X1B5X09QQVJHXzA_"><span class="b">_Py_OPARG</span></a><span class="f">(</span><span class="b">word</span><span class="f">)</span> <span class="f">(</span><span class="f">(</span><span class="b">word</span><span class="f">)</span> <span class="f">&amp;</span> <span class="c">255</span><span class="f">)</span>
<a name="15" /><span class="True">      15:</span> <span class="f">#</span><span class="n">else</span>
<a name="16" /><span class="True">      16:</span> <span class="f">#</span>  <span class="n">define</span> <a href="macros_noref.html#_X1B5X09QQ09ERV8w"><span class="b">_Py_OPCODE</span></a><span class="f">(</span><span class="b">word</span><span class="f">)</span> <span class="f">(</span><span class="f">(</span><span class="b">word</span><span class="f">)</span> <span class="f">&amp;</span> <span class="c">255</span><span class="f">)</span>
<a name="17" /><span class="True">      17:</span> <span class="f">#</span>  <span class="n">define</span> <a href="macros_noref.html#_X1B5X09QQVJHXzA_"><span class="b">_Py_OPARG</span></a><span class="f">(</span><span class="b">word</span><span class="f">)</span> <span class="f">(</span><span class="f">(</span><span class="b">word</span><span class="f">)</span> <span class="f">&gt;&gt;</span> <span class="c">8</span><span class="f">)</span>
<a name="18" /><span class="True">      18:</span> <span class="f">#</span><span class="n">endif</span>
<a name="19" /><span class="True">      19:</span> 
<a name="20" /><span class="True">      20:</span> <span class="k">/* Bytecode object */</span>
<a name="21" /><span class="True">      21:</span> <span class="m">typedef</span> <span class="m">struct</span> <span class="f">{</span>
<a name="22" /><span class="True">      22:</span>     <a href="macros_ref.html#_UHlPYmplY3RfSEVBRF8w"><span class="b">PyObject_HEAD</span></a>
<a name="23" /><span class="True">      23:</span>     <span class="m">int</span> <span class="b">co_argcount</span><span class="f">;</span>        <span class="k">/* #arguments, except *args */</span>
<a name="24" /><span class="True">      24:</span>     <span class="m">int</span> <span class="b">co_kwonlyargcount</span><span class="f">;</span>    <span class="k">/* #keyword only arguments */</span>
<a name="25" /><span class="True">      25:</span>     <span class="m">int</span> <span class="b">co_nlocals</span><span class="f">;</span>        <span class="k">/* #local variables */</span>
<a name="26" /><span class="True">      26:</span>     <span class="m">int</span> <span class="b">co_stacksize</span><span class="f">;</span>        <span class="k">/* #entries needed for evaluation stack */</span>
<a name="27" /><span class="True">      27:</span>     <span class="m">int</span> <span class="b">co_flags</span><span class="f">;</span>        <span class="k">/* CO_..., see below */</span>
<a name="28" /><span class="True">      28:</span>     <span class="m">int</span> <span class="b">co_firstlineno</span><span class="f">;</span>   <span class="k">/* first source line number */</span>
<a name="29" /><span class="True">      29:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">co_code</span><span class="f">;</span>        <span class="k">/* instruction opcodes */</span>
<a name="30" /><span class="True">      30:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">co_consts</span><span class="f">;</span>    <span class="k">/* list (constants used) */</span>
<a name="31" /><span class="True">      31:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">co_names</span><span class="f">;</span>        <span class="k">/* list of strings (names used) */</span>
<a name="32" /><span class="True">      32:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">co_varnames</span><span class="f">;</span>    <span class="k">/* tuple of strings (local variable names) */</span>
<a name="33" /><span class="True">      33:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">co_freevars</span><span class="f">;</span>    <span class="k">/* tuple of strings (free variable names) */</span>
<a name="34" /><span class="True">      34:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">co_cellvars</span><span class="f">;</span>      <span class="k">/* tuple of strings (cell variable names) */</span>
<a name="35" /><span class="True">      35:</span>     <span class="k">/* The rest aren&apos;t used in either hash or comparisons, except for co_name,</span>
<a name="36" /><span class="True">      36:</span> <span class="k">       used in both. This is done to preserve the name and line number</span>
<a name="37" /><span class="True">      37:</span> <span class="k">       for tracebacks and debuggers; otherwise, constant de-duplication</span>
<a name="38" /><span class="True">      38:</span> <span class="k">       would collapse identical functions/lambdas defined on different lines.</span>
<a name="39" /><span class="True">      39:</span> <span class="k">    */</span>
<a name="40" /><span class="True">      40:</span>     <span class="m">unsigned</span> <span class="m">char</span> <span class="f">*</span><span class="b">co_cell2arg</span><span class="f">;</span> <span class="k">/* Maps cell vars which are arguments. */</span>
<a name="41" /><span class="True">      41:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">co_filename</span><span class="f">;</span>    <span class="k">/* unicode (where it was loaded from) */</span>
<a name="42" /><span class="True">      42:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">co_name</span><span class="f">;</span>        <span class="k">/* unicode (name, for reference) */</span>
<a name="43" /><span class="True">      43:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">co_lnotab</span><span class="f">;</span>    <span class="k">/* string (encoding addr&lt;-&gt;lineno mapping) See</span>
<a name="44" /><span class="True">      44:</span> <span class="k">                   Objects/lnotab_notes.txt for details. */</span>
<a name="45" /><span class="True">      45:</span>     <span class="m">void</span> <span class="f">*</span><span class="b">co_zombieframe</span><span class="f">;</span>     <span class="k">/* for optimization only (see frameobject.c) */</span>
<a name="46" /><span class="True">      46:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">co_weakreflist</span><span class="f">;</span>   <span class="k">/* to support weakrefs to code objects */</span>
<a name="47" /><span class="True">      47:</span>     <span class="k">/* Scratch space for extra data relating to the code object.</span>
<a name="48" /><span class="True">      48:</span> <span class="k">       Type is a void* to keep the format private in codeobject.c to force</span>
<a name="49" /><span class="True">      49:</span> <span class="k">       people to go through the proper APIs. */</span>
<a name="50" /><span class="True">      50:</span>     <span class="m">void</span> <span class="f">*</span><span class="b">co_extra</span><span class="f">;</span>
<a name="51" /><span class="True">      51:</span> <span class="f">}</span> <span class="b">PyCodeObject</span><span class="f">;</span>
<a name="52" /><span class="True">      52:</span> 
<a name="53" /><span class="True">      53:</span> <span class="k">/* Masks for co_flags above */</span>
<a name="54" /><span class="True">      54:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_Q09fT1BUSU1JWkVEXzA_"><span class="b">CO_OPTIMIZED</span></a>    <span class="c">0x0001</span>
<a name="55" /><span class="True">      55:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_Q09fTkVXTE9DQUxTXzA_"><span class="b">CO_NEWLOCALS</span></a>    <span class="c">0x0002</span>
<a name="56" /><span class="True">      56:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_Q09fVkFSQVJHU18w"><span class="b">CO_VARARGS</span></a>    <span class="c">0x0004</span>
<a name="57" /><span class="True">      57:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_Q09fVkFSS0VZV09SRFNfMA__"><span class="b">CO_VARKEYWORDS</span></a>    <span class="c">0x0008</span>
<a name="58" /><span class="True">      58:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_Q09fTkVTVEVEXzA_"><span class="b">CO_NESTED</span></a>       <span class="c">0x0010</span>
<a name="59" /><span class="True">      59:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_Q09fR0VORVJBVE9SXzA_"><span class="b">CO_GENERATOR</span></a>    <span class="c">0x0020</span>
<a name="60" /><span class="True">      60:</span> <span class="k">/* The CO_NOFREE flag is set if there are no free or cell variables.</span>
<a name="61" /><span class="True">      61:</span> <span class="k">   This information is redundant, but it allows a single flag test</span>
<a name="62" /><span class="True">      62:</span> <span class="k">   to determine whether there is any extra work to be done when the</span>
<a name="63" /><span class="True">      63:</span> <span class="k">   call frame it setup.</span>
<a name="64" /><span class="True">      64:</span> <span class="k">*/</span>
<a name="65" /><span class="True">      65:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_Q09fTk9GUkVFXzA_"><span class="b">CO_NOFREE</span></a>       <span class="c">0x0040</span>
<a name="66" /><span class="True">      66:</span> 
<a name="67" /><span class="True">      67:</span> <span class="k">/* The CO_COROUTINE flag is set for coroutine functions (defined with</span>
<a name="68" /><span class="True">      68:</span> <span class="k">   ``async def`` keywords) */</span>
<a name="69" /><span class="True">      69:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_Q09fQ09ST1VUSU5FXzA_"><span class="b">CO_COROUTINE</span></a>            <span class="c">0x0080</span>
<a name="70" /><span class="True">      70:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_Q09fSVRFUkFCTEVfQ09ST1VUSU5FXzA_"><span class="b">CO_ITERABLE_COROUTINE</span></a>   <span class="c">0x0100</span>
<a name="71" /><span class="True">      71:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_Q09fQVNZTkNfR0VORVJBVE9SXzA_"><span class="b">CO_ASYNC_GENERATOR</span></a>      <span class="c">0x0200</span>
<a name="72" /><span class="True">      72:</span> 
<a name="73" /><span class="True">      73:</span> <span class="k">/* These are no longer used. */</span>
<a name="74" /><span class="False">      74:</span> <span class="f">#</span><span class="n">if</span> <span class="c">0</span>
<a name="75" /><span class="False">      75:</span> <span class="f">#</span><span class="n">define</span> <span class="b">CO_GENERATOR_ALLOWED</span>    <span class="c">0x1000</span>
<a name="76" /><span class="True">      76:</span> <span class="f">#</span><span class="n">endif</span>
<a name="77" /><span class="True">      77:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_Q09fRlVUVVJFX0RJVklTSU9OXzA_"><span class="b">CO_FUTURE_DIVISION</span></a>        <span class="c">0x2000</span>
<a name="78" /><span class="True">      78:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_Q09fRlVUVVJFX0FCU09MVVRFX0lNUE9SVF8w"><span class="b">CO_FUTURE_ABSOLUTE_IMPORT</span></a> <span class="c">0x4000</span> <span class="k">/* do absolute imports by default */</span>
<a name="79" /><span class="True">      79:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_Q09fRlVUVVJFX1dJVEhfU1RBVEVNRU5UXzA_"><span class="b">CO_FUTURE_WITH_STATEMENT</span></a>  <span class="c">0x8000</span>
<a name="80" /><span class="True">      80:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_Q09fRlVUVVJFX1BSSU5UX0ZVTkNUSU9OXzA_"><span class="b">CO_FUTURE_PRINT_FUNCTION</span></a>  <span class="c">0x10000</span>
<a name="81" /><span class="True">      81:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_Q09fRlVUVVJFX1VOSUNPREVfTElURVJBTFNfMA__"><span class="b">CO_FUTURE_UNICODE_LITERALS</span></a> <span class="c">0x20000</span>
<a name="82" /><span class="True">      82:</span> 
<a name="83" /><span class="True">      83:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_Q09fRlVUVVJFX0JBUlJZX0FTX0JERkxfMA__"><span class="b">CO_FUTURE_BARRY_AS_BDFL</span></a>  <span class="c">0x40000</span>
<a name="84" /><span class="True">      84:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_Q09fRlVUVVJFX0dFTkVSQVRPUl9TVE9QXzA_"><span class="b">CO_FUTURE_GENERATOR_STOP</span></a>  <span class="c">0x80000</span>
<a name="85" /><span class="True">      85:</span> 
<a name="86" /><span class="True">      86:</span> <span class="k">/* This value is found in the co_cell2arg array when the associated cell</span>
<a name="87" /><span class="True">      87:</span> <span class="k">   variable does not correspond to an argument. The maximum number of</span>
<a name="88" /><span class="True">      88:</span> <span class="k">   arguments is 255 (indexed up to 254), so 255 work as a special flag.*/</span>
<a name="89" /><span class="True">      89:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_Q09fQ0VMTF9OT1RfQU5fQVJHXzA_"><span class="b">CO_CELL_NOT_AN_ARG</span></a> <span class="c">255</span>
<a name="90" /><span class="True">      90:</span> 
<a name="91" /><span class="True">      91:</span> <span class="k">/* This should be defined if a future statement modifies the syntax.</span>
<a name="92" /><span class="True">      92:</span> <span class="k">   For example, when a keyword is added.</span>
<a name="93" /><span class="True">      93:</span> <span class="k">*/</span>
<a name="94" /><span class="True">      94:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UFlfUEFSU0VSX1JFUVVJUkVTX0ZVVFVSRV9LRVlXT1JEXzA_"><span class="b">PY_PARSER_REQUIRES_FUTURE_KEYWORD</span></a>
<a name="95" /><span class="True">      95:</span> 
<a name="96" /><span class="True">      96:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_Q09fTUFYQkxPQ0tTXzA_"><span class="b">CO_MAXBLOCKS</span></a> <span class="c">20</span> <span class="k">/* Max static block nesting within a function */</span>
<a name="97" /><span class="True">      97:</span> 
<a name="98" /><span class="True">      98:</span> <a href="macros_ref.html#_UHlBUElfREFUQV8w"><span class="b">PyAPI_DATA</span></a><span class="f">(</span><span class="b">PyTypeObject</span><span class="f">)</span> <span class="b">PyCode_Type</span><span class="f">;</span>
<a name="99" /><span class="True">      99:</span> 
<a name="100" /><span class="True">     100:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlDb2RlX0NoZWNrXzA_"><span class="b">PyCode_Check</span></a><span class="f">(</span><span class="b">op</span><span class="f">)</span> <span class="f">(</span><a href="macros_ref.html#_UHlfVFlQRV8w"><span class="b">Py_TYPE</span></a><span class="f">(</span><span class="b">op</span><span class="f">)</span> <span class="f">==</span> <span class="f">&amp;</span><span class="b">PyCode_Type</span><span class="f">)</span>
<a name="101" /><span class="True">     101:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlDb2RlX0dldE51bUZyZWVfMA__"><span class="b">PyCode_GetNumFree</span></a><span class="f">(</span><span class="b">op</span><span class="f">)</span> <span class="f">(</span><a href="macros_ref.html#_UHlUdXBsZV9HRVRfU0laRV8w"><span class="b">PyTuple_GET_SIZE</span></a><span class="f">(</span><span class="f">(</span><span class="b">op</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">co_freevars</span><span class="f">)</span><span class="f">)</span>
<a name="102" /><span class="True">     102:</span> 
<a name="103" /><span class="True">     103:</span> <span class="k">/* Public interface */</span>
<a name="104" /><span class="True">     104:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyCodeObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyCode_New</span><span class="f">(</span>
<a name="105" /><span class="True">     105:</span>     <span class="m">int</span><span class="f">,</span> <span class="m">int</span><span class="f">,</span> <span class="m">int</span><span class="f">,</span> <span class="m">int</span><span class="f">,</span> <span class="m">int</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">,</span>
<a name="106" /><span class="True">     106:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">,</span>
<a name="107" /><span class="True">     107:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">,</span> <span class="m">int</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="108" /><span class="True">     108:</span>         <span class="k">/* same as struct above */</span>
<a name="109" /><span class="True">     109:</span> 
<a name="110" /><span class="True">     110:</span> <span class="k">/* Creates a new empty code object with the specified source location. */</span>
<a name="111" /><span class="True">     111:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyCodeObject</span> <span class="f">*</span><span class="f">)</span>
<a name="112" /><span class="True">     112:</span> <span class="b">PyCode_NewEmpty</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">filename</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">funcname</span><span class="f">,</span> <span class="m">int</span> <span class="b">firstlineno</span><span class="f">)</span><span class="f">;</span>
<a name="113" /><span class="True">     113:</span> 
<a name="114" /><span class="True">     114:</span> <span class="k">/* Return the line number associated with the specified bytecode index</span>
<a name="115" /><span class="True">     115:</span> <span class="k">   in this code object.  If you just need the line number of a frame,</span>
<a name="116" /><span class="True">     116:</span> <span class="k">   use PyFrame_GetLineNumber() instead. */</span>
<a name="117" /><span class="True">     117:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">PyCode_Addr2Line</span><span class="f">(</span><span class="b">PyCodeObject</span> <span class="f">*</span><span class="f">,</span> <span class="m">int</span><span class="f">)</span><span class="f">;</span>
<a name="118" /><span class="True">     118:</span> 
<a name="119" /><span class="True">     119:</span> <span class="k">/* for internal use only */</span>
<a name="120" /><span class="True">     120:</span> <span class="m">typedef</span> <span class="m">struct</span> <span class="b">_addr_pair</span> <span class="f">{</span>
<a name="121" /><span class="True">     121:</span>         <span class="m">int</span> <span class="b">ap_lower</span><span class="f">;</span>
<a name="122" /><span class="True">     122:</span>         <span class="m">int</span> <span class="b">ap_upper</span><span class="f">;</span>
<a name="123" /><span class="True">     123:</span> <span class="f">}</span> <span class="b">PyAddrPair</span><span class="f">;</span>
<a name="124" /><span class="True">     124:</span> 
<a name="125" /><span class="True">     125:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="126" /><span class="True">     126:</span> <span class="k">/* Update *bounds to describe the first and one-past-the-last instructions in the</span>
<a name="127" /><span class="True">     127:</span> <span class="k">   same line as lasti.  Return the number of that line.</span>
<a name="128" /><span class="True">     128:</span> <span class="k">*/</span>
<a name="129" /><span class="True">     129:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">_PyCode_CheckLineNumber</span><span class="f">(</span><span class="b">PyCodeObject</span><span class="f">*</span> <span class="b">co</span><span class="f">,</span>
<a name="130" /><span class="True">     130:</span>                                         <span class="m">int</span> <span class="b">lasti</span><span class="f">,</span> <span class="b">PyAddrPair</span> <span class="f">*</span><span class="b">bounds</span><span class="f">)</span><span class="f">;</span>
<a name="131" /><span class="True">     131:</span> 
<a name="132" /><span class="True">     132:</span> <span class="k">/* Create a comparable key used to compare constants taking in account the</span>
<a name="133" /><span class="True">     133:</span> <span class="k"> * object type. It is used to make sure types are not coerced (e.g., float and</span>
<a name="134" /><span class="True">     134:</span> <span class="k"> * complex) _and_ to distinguish 0.0 from -0.0 e.g. on IEEE platforms</span>
<a name="135" /><span class="True">     135:</span> <span class="k"> *</span>
<a name="136" /><span class="True">     136:</span> <span class="k"> * Return (type(obj), obj, ...): a tuple with variable size (at least 2 items)</span>
<a name="137" /><span class="True">     137:</span> <span class="k"> * depending on the type and the value. The type is the first item to not</span>
<a name="138" /><span class="True">     138:</span> <span class="k"> * compare bytes and str which can raise a BytesWarning exception. */</span>
<a name="139" /><span class="True">     139:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span><span class="f">*</span><span class="f">)</span> <span class="b">_PyCode_ConstantKey</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">obj</span><span class="f">)</span><span class="f">;</span>
<a name="140" /><span class="True">     140:</span> <span class="f">#</span><span class="n">endif</span>
<a name="141" /><span class="True">     141:</span> 
<a name="142" /><span class="True">     142:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span><span class="f">*</span><span class="f">)</span> <span class="b">PyCode_Optimize</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">code</span><span class="f">,</span> <span class="b">PyObject</span><span class="f">*</span> <span class="b">consts</span><span class="f">,</span>
<a name="143" /><span class="True">     143:</span>                                       <span class="b">PyObject</span> <span class="f">*</span><span class="b">names</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">lnotab</span><span class="f">)</span><span class="f">;</span>
<a name="144" /><span class="True">     144:</span> 
<a name="145" /><span class="True">     145:</span> 
<a name="146" /><span class="True">     146:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="147" /><span class="True">     147:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">_PyCode_GetExtra</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">code</span><span class="f">,</span> <span class="b">Py_ssize_t</span> <span class="b">index</span><span class="f">,</span>
<a name="148" /><span class="True">     148:</span>                                  <span class="m">void</span> <span class="f">*</span><span class="f">*</span><span class="b">extra</span><span class="f">)</span><span class="f">;</span>
<a name="149" /><span class="True">     149:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">_PyCode_SetExtra</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">code</span><span class="f">,</span> <span class="b">Py_ssize_t</span> <span class="b">index</span><span class="f">,</span>
<a name="150" /><span class="True">     150:</span>                                  <span class="m">void</span> <span class="f">*</span><span class="b">extra</span><span class="f">)</span><span class="f">;</span>
<a name="151" /><span class="True">     151:</span> <span class="f">#</span><span class="n">endif</span>
<a name="152" /><span class="True">     152:</span> 
<a name="153" /><span class="False">     153:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">__cplusplus</span>
<a name="154" /><span class="False">     154:</span> <span class="f">}</span>
<a name="155" /><span class="True">     155:</span> <span class="f">#</span><span class="n">endif</span>
<a name="156" /><span class="True">     156:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* !Py_CODE_H */</span>
<a name="157" /><span class="True">     157:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* Py_LIMITED_API */</span>
<a name="158" /><span class="True">     158:</span> </pre>
  </body>
</html>
